import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Servidor_t3 {

    public static void main(String[] args) {

        ServerSocket    s;  //Socket servidor
        Socket      sc;      //Socket cliente
    	int num_proc=0;
   
       while(true){
        
        try {
            //Creo el socket server
            s = new ServerSocket(9999);
            
            //Invoco el metodo accept del socket servidor, me devuelve una referencia al socket cliente
            sc = s.accept(); 
            
            
            NewClient newC = new NewClient(sc);
            newC.start();
            num_proc++;
			System.out.println("cliente numero: "+num_proc);
            
            
            s.close();
        } catch (IOException e) {
            System.out.println("No puedo crear el socket");
        }
       }
    }

}

class NewClient extends Thread {
	
		private Socket c=null;
		private PrintStream     p;    //Canal de escritura
        private BufferedReader  b;      //Canal de Lectura
        private String    mensaje;
	   public NewClient (Socket socket) { // Constructor no siempre necesario
	      this.c=socket;
	   }
	   public void run() { // Sobrecargando al metodo run
		   try {
	      
	    	  
	    	//Obtengo una referencia a los canales de escritura y lectura del socket cliente
	            b = new BufferedReader( new InputStreamReader ( c.getInputStream() ) );
	            p = new PrintStream   ( c.getOutputStream() );
	            long tiempoInicio,tiempoEjecucion, contadorBytes=0;
	            float average;
	            tiempoInicio = System.currentTimeMillis();
	            
	            while ( true ) {
	            	
	                //Leo lo que escribio el socket cliente en el canal de lectura
	                mensaje = b.readLine();
	                contadorBytes+=mensaje.length();
	                
	                //System.out.println(mensaje);
	                
	                //Escribo en canal de escritura el mismo mensaje recibido
	                //p.println(mensaje);

	                if ( mensaje.equals("by")) {
	                   break;
	                }
	            }
	            tiempoEjecucion = System.currentTimeMillis() - tiempoInicio;
	            
	            average = contadorBytes / tiempoEjecucion;
	            
	            System.out.println(average);
	            c.close();
	            p.close();
	            b.close();
	            
	    	  
	      
		   } catch (IOException e) {
	            System.out.println("No puedo crear el socket_1");
	        }
	   }
	}